package com.atguigu.gmall.weball.controller;

import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.client.ProductFeignClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;


import javax.servlet.http.HttpServletRequest;
import java.io.FileWriter;
import java.io.IOException;

@Controller
@SuppressWarnings("all")
public class IndexController {
    @Autowired
    private ProductFeignClient productFeignClient;

    @Autowired
    private TemplateEngine templateEngine;


    //两种首页的方式:这是第一种:缓存数据加页面渲染的方式
    @GetMapping({"/","index.html"})
    public String index(HttpServletRequest request){
        // 获取首页分类数据
        Result result = productFeignClient.getBaseCategoryList();
        request.setAttribute("list",result.getData());
        return "index/index";
    }
    //第二种:nginx做静态代理的方式,生成静态页面(大型分布式高并发适合采用(这里为学习,用第一种方法就行,要不然每次都要启动nginx))
    //如下所示,执行以下即可在指定文件目录下生成静态的页面,只需要把css等静态数据放到生成的页面的同级目录下就可以了
    //视频在day09的第19个视频中讲解,课件在08--异步最后一小节中说明
    /*@GetMapping("createIndex")
    @ResponseBody
    public Result createIndex(){
        //  获取后台存储的数据
        Result result = productFeignClient.getBaseCategoryList();
        //  设置模板显示的内容
        Context context = new Context();
        context.setVariable("list",result.getData());

        //  定义文件输入位置IO流
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter("D:\\index.html");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //  调用process();方法创建模板

         *process()三个参数:
         * 参数一:String template:模板
         * 参数二:IContext context:上下文对象--数据
         * 参数三:Writer writer :流对象,生成的位置

        templateEngine.process("index/index",context,fileWriter);
        return Result.ok();
    }*/




}
